package com.otherTest.designpattern.behavioralpattern.chainresponsibility;


import java.math.BigDecimal;

/**
 * @Description: 责任链模式
 * 避免请求发送者与接收者耦合在一起，让多个对象都有可能接收请求，将这些对象连接成一条链，并且沿着这条链传递请求，直到有对象处理它为止
 *
 * 优点：
 * 降低耦合度，请求的发送者和接收者解耦
 * 简化对象，对象不需要知道责任链的内部结构
 * 允许动态的新增删除责任链，或者调整次序，结果变得灵活
 * 新增请求类也很方便
 *
 * 缺点:
 * 不一定保证请求都能够被处理
 * 性能受到一定影响
 * 代码调试时将不太方便
 *
 * 应用场景：struts2的拦截器链，servlet的filter
 * @author: conceit
 * @Date: 2018/9/1 10:57
 */
public class ChainResponsibilityMainTest {


    public static void main(String[] args) {

        ChainResponsibilityHandler groupLeaderHandler=new GroupLeaderHandler();
        ChainResponsibilityHandler directorHandler=new DirectorHandler();
        ChainResponsibilityHandler generalManagerHandler=new GeneralManagerHandler();

        groupLeaderHandler.setNextHandler(directorHandler);
        directorHandler.setNextHandler(generalManagerHandler);

        groupLeaderHandler.handlerRequest(new BigDecimal(21));


    }


}
